/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pagrafo.genetico;

import java.util.ArrayList;
import java.util.Collections;
import pagrafo.grafo.Grafo;

/**
 *
 * @author Fabricio
 */
public class Crossover {
    
    public static ArrayList<Cromossomo> executar(ArrayList<Cromossomo> populacao, int n, Grafo g, int k, double capacidade) {

        ArrayList<Cromossomo> filhos = new ArrayList<Cromossomo>();

        //Seleção dos pais que serão cruzados
        ArrayList<Cromossomo> pais = SelecaoRoleta.selecionar(populacao, n);

        //Cria dois filhos para cada par de pais
        for (int i = 0; i < n - 1; i += 2) {
            
            Cromossomo[] novosFilhos = CrossoverRotas.executar(pais.get(i), pais.get(i + 1), g, k, capacidade);
            //Cromossomo[] novosFilhos = CrossoverAlternado.executar(pais.get(i), pais.get(i + 1), g, k, capacidade);
            
            if(novosFilhos[0] != null){
                filhos.add(novosFilhos[0]);
            }
            if(novosFilhos[1] != null){
                filhos.add(novosFilhos[1]);
            }
        }

        return filhos;
    }

    
}
